/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.database.bean;

import com.database.dao.AsignacionesDao;
import com.database.dao.CategoriaDao;
import com.database.dao.UsuarioDao;
import com.database.dao.impl.AsignacionesDaoImplement;
import com.database.dao.impl.CategoriaDaoImplement;
import com.database.dao.impl.UsuarioDaoImplement;
import com.database.model.Asignaciones;
import com.database.model.Categoria;
import com.database.model.Usuario;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
 *
 * @author diego y Yinna
 */
@ManagedBean(name = "asignacionesBean")
@RequestScoped
public class AsignacionesBean {
    
    
    private Asignaciones asignacion;
    private List<Asignaciones> asignaciones;
    private List<Usuario> usuariosDisponiblesxCateogria;
    private int usuarioAsignado;
    private int categoriaPorAsignar;
    
    

    
    public AsignacionesBean() {
    }

    public Asignaciones getAsignacion() {
        if(this.asignacion==null){
            this.asignacion=new Asignaciones();
        }
        return this.asignacion;
    }

    public void setCategoria(Asignaciones asignacion) {
        this.asignacion = asignacion;
    }

    public List<Asignaciones> getAsignaciones() {
        AsignacionesDao asignacionesDao = new AsignacionesDaoImplement(); 
        this.asignaciones= asignacionesDao.buscarTodos();
        return this.asignaciones;
    }
    
        public void preparInsertar(){
        this.asignacion = new Asignaciones();
    }
    
     public void prepararActualizar(Integer id){
         AsignacionesDao asignacionesDao = new AsignacionesDaoImplement();
         this.asignacion = new Asignaciones();
         System.err.println("Va a actualizar la Asignacion: " + id);
         this.asignacion= asignacionesDao.buscarPorId(id);
         System.err.println("Asignacion encontrada es:  " + this.asignacion.getCategoria().getNombre());
    }
     
    /**
     * /*Bùesqueda en DB de categoria y de Usuario seleccionado para realizar
     * respectiva asociacion.
     */
    public void formatearSelectItems(){
        UsuarioDao usuariodado= new UsuarioDaoImplement();
        CategoriaDao categoriaDao= new CategoriaDaoImplement();
      
        Categoria categoriaEscogida = categoriaDao.buscarPorId(categoriaPorAsignar);       
        Usuario encontrado = usuariodado.buscarPorId(usuarioAsignado);

        
        this.asignacion= new Asignaciones();
        this.asignacion.setUsuario(encontrado);
        this.asignacion.setCategoria(categoriaEscogida);
        
        
        
    } 
        
    public void insertar(){
         formatearSelectItems();
         AsignacionesDao asignacionesDao = new AsignacionesDaoImplement();
         asignacionesDao.insertar(this.asignacion);
         this.asignacion = new Asignaciones();
    }
        
     public void actualizar(){
         AsignacionesDao asignacionesDao = new AsignacionesDaoImplement();
         asignacionesDao.actualizar(this.asignacion);
         this.asignacion = new Asignaciones();
    }
     
     public void eliminar(){
         AsignacionesDao asignacionesDao = new AsignacionesDaoImplement();
         asignacionesDao.eliminar(this.asignacion); 
         this.asignacion = new Asignaciones();
     }
     
      public void prepararEliminar(Integer id){
         AsignacionesDao asignacionesDao = new AsignacionesDaoImplement();
         this.asignacion = new Asignaciones();
         this.asignacion= asignacionesDao.buscarPorId(id);
    }

    public int getUsuarioAsignado() {
        return usuarioAsignado;
    }

    public void setUsuarioAsignado(int usuarioAsignado) {
        this.usuarioAsignado = usuarioAsignado;
    }

    public int getCategoriaPorAsignar() {
        return categoriaPorAsignar;
    }

    public void setCategoriaPorAsignar(int categoriaPorAsignar) {
        this.categoriaPorAsignar = categoriaPorAsignar;
    }
    
    /**
     * Metodo el cual retorna una lista de Usuarios técnicos
     * que atenderán la categoria recibida como parámetro.
     */
    
    public List<Usuario> usuariosDisponiblesxCategoria(int codCategoria){
        AsignacionesDao asignacionesDao = new AsignacionesDaoImplement();
        usuariosDisponiblesxCateogria= asignacionesDao.usuariosDisponiblesxCategoria(codCategoria);
        return this.usuariosDisponiblesxCateogria;
    }
            
            
}
